/*

* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Smart-Shop开源商城系统/ Java商城-首选电商平台系统 请务必保留此注释头信息
* |     开源地址: https://gitee.com/ningbo-qishan/gruul-mall
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     可正常分享和学习源码,未经授权 不可商用！
* |     商业版中台购买/开源版商业授权 联系技术客服
* |     官网:  https://www.73app.cn/
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Copyright (c) 2016-2999 宁波启山智软科技有限公司
* |     版权所有 ,侵权必究！
* ------------------------------------------------------------------------

*/
package com.medusa.gruul.payment.api.model.param.sft;


import cn.hutool.core.util.StrUtil;
import com.medusa.gruul.payment.api.util.GlobalConstant;
import lombok.Data;

import java.io.Serializable;

/**
 * @author create by zq
 * @date created in 2019/11/10
 */
@Data
public class SftCallBack implements Serializable {


    private static final long serialVersionUID = 7678791067269383516L;


    /**
     * 交易类型
     */
    private String txnType;


    /**
     * 交易币别 CNY
     */
    private String cur;


    /**
     * 金额
     */
    private String amt;


    /**
     * 商户号
     */
    private String merchantId;


    /**
     * 终端号
     */
    private String terminalId;


    /**
     * 终端流水号
     */
    private String traceNo;


    /**
     * 终端批次号
     */
    private String batchNo;


    /**
     * 盛付通订单号
     */
    private String orderId;


    /**
     * 交易时间
     */
    private String txnTime;


    /**
     * 交易参考号
     */
    private String txnRef;


    /**
     * 交易应答码 00成功
     */
    private String respCode;


    /**
     * 商户订单号
     */
    private String merOrderId;


    /**
     * 卡号后四位
     */
    private String shortPan;


    /**
     * 附加信息
     */
    private String extData;


    /**
     * 原交易参考号
     */
    private String origTxnRef;


    /**
     * 通知账户
     */
    private String notifyAccounts;


    /**
     * 终端类型
     */
    private String clientOsType;


    /**
     * 签名
     */
    private String sign;

    public String getSignString() {
        StringBuilder sb = new StringBuilder();
        sb.append(StrUtil.isBlank(this.txnType) ? GlobalConstant.STRING_EMPTY : this.txnType);
        sb.append(StrUtil.isBlank(this.cur) ? GlobalConstant.STRING_EMPTY : this.cur);
        sb.append(StrUtil.isBlank(this.amt) ? GlobalConstant.STRING_EMPTY : this.amt);
        sb.append(StrUtil.isBlank(this.merchantId) ? GlobalConstant.STRING_EMPTY : this.merchantId);
        sb.append(StrUtil.isBlank(this.terminalId) ? GlobalConstant.STRING_EMPTY : this.terminalId);
        sb.append(StrUtil.isBlank(this.traceNo) ? GlobalConstant.STRING_EMPTY : this.traceNo);
        sb.append(StrUtil.isBlank(this.batchNo) ? GlobalConstant.STRING_EMPTY : this.batchNo);
        sb.append(StrUtil.isBlank(this.orderId) ? GlobalConstant.STRING_EMPTY : this.orderId);
        sb.append(StrUtil.isBlank(this.txnTime) ? GlobalConstant.STRING_EMPTY : this.txnTime);
        sb.append(StrUtil.isBlank(this.txnRef) ? GlobalConstant.STRING_EMPTY : this.txnRef);
        sb.append(StrUtil.isBlank(this.respCode) ? GlobalConstant.STRING_EMPTY : this.respCode);
        sb.append(StrUtil.isBlank(this.merOrderId) ? GlobalConstant.STRING_EMPTY : this.merOrderId);
        sb.append(StrUtil.isBlank(this.shortPan) ? GlobalConstant.STRING_EMPTY : this.shortPan);
        sb.append(StrUtil.isBlank(this.extData) ? GlobalConstant.STRING_EMPTY : this.extData);
        sb.append(StrUtil.isBlank(this.notifyAccounts) ? GlobalConstant.STRING_EMPTY : this.notifyAccounts);
        sb.append(StrUtil.isBlank(this.clientOsType) ? GlobalConstant.STRING_EMPTY : this.clientOsType);
        String signString = sb.toString();

        if (signString.lastIndexOf(GlobalConstant.STRING_PLUS) == signString.length() - 1) {
            return signString.substring(0, signString.length() - 1);
        }

        return signString;
    }

}
